package tools

import (
	"reflect"
	"regexp"
)

// 判断用户类型，支持手机、邮箱、身份证、用户名
func IsAccount(value string) (key string, account string) {
	// 手机号码
	if regexp.MustCompile(`^1[3-9]\d{9}$`).MatchString(value) {
		return "phone", value
	}
	// 邮箱
	if regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`).MatchString(value) {
		return "email", value
	}
	// 身份证号码
	if regexp.MustCompile(`(^\d{15}$)|(^\d{17}(\d|X|x)$)`).MatchString(value) {
		return "ucode", value
	} else {
		// 默认用户名
		return "username", value
	}
}

func IsNil(val interface{}) bool {
	if val == nil {
		return false
	}
	v := reflect.ValueOf(val)
	switch v.Kind() {
	case reflect.Ptr, reflect.Slice, reflect.Map, reflect.Chan, reflect.Func, reflect.Interface:
		return !v.IsNil()
	}
	return true
}
